﻿public partial class Solution
{
    public double MyPow(double x, int n)
    {
        double result = 0.0;
        if (x != 0)
        {
            result = 1.0;
            if (n != 0)
            {
                double y = n > 0 ? x : 1 / x;
                n = n > 0 ? n : -n;
                // 快速幂循环版
                while (n > 0)
                {
                    // 每次检查n的二进制最后是不是1
                    // 为1时，需要将对应x^(2^k)计入结果
                    if ((n & 1) == 1)
                    {
                        result *= y;
                    }
                    // y是x^(2^k)
                    y *= y;
                    n /= 2;
                }
            }
        }
        return result;
    }
}
